Skip to content

feat: add Plivo bundle with SMS, voice call, and number lookup components - #14396

Open
sarveshpatil-plivo wants to merge 6 commits into
langflow-ai:release-1.12.0from
sarveshpatil-plivo:plivo-bundle
Open

feat: add Plivo bundle with SMS, voice call, and number lookup components#14396
sarveshpatil-plivo wants to merge 6 commits into
langflow-ai:release-1.12.0from
sarveshpatil-plivo:plivo-bundle

Conversation

@sarveshpatil-plivo

@sarveshpatil-plivo sarveshpatil-plivo commented Aug 4, 2026

Copy link
Copy Markdown

Description

This PR adds a Plivo bundle with three components (Send SMS, Make Call, and Lookup Number) backed by the Plivo REST API.
Plivo is a CPaaS provider for SMS and voice, so a flow can send a text, place an outbound call, and look up a number's details without leaving the canvas. The components register under a new Plivo bundle in the sidebar with a Plivo icon.

What's included

  • Three components at src/lfx/src/lfx/components/plivo/ (send_sms, make_call, lookup_number), registered in the components package.
  • Frontend registration for the Plivo icon and the sidebar bundle entry.
  • A documentation page for the bundle.
  • The prebuilt component_index.json is left for CI's autofix workflow (make build_component_index) to regenerate, so the bundle is picked up in production builds without a manual index change.

Component notes

  • Send SMS and Make Call take the Auth ID and Auth Token as secret inputs and default the sender to PLIVO_SRC when it is set.
  • Make Call ships with a default Answer URL and defaults the answer method to GET, so a basic call works with no extra setup.
  • Lookup Number returns country, format, and carrier details for a number.

Testing

All three components load in a running langflow and appear under the Plivo bundle.
Verified live against a real Plivo account: Send SMS delivered, Make Call connected and played audio, and Lookup Number returned real carrier data.

Screenshots

image (43) image (44)

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: c2dec457-b69c-45d3-87af-4f9930f05290

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Walkthrough

Added Plivo components for SMS delivery, outbound calls, and phone number lookup. Registered the components and Plivo icon in the frontend. Added bundle navigation and documentation.

Changes

Plivo integration

Layer / File(s) Summary
Plivo component contracts
src/lfx/src/lfx/components/plivo/...
Defines Plivo metadata, credentials, operation inputs, outputs, and package exports.
Plivo API operations
src/lfx/src/lfx/components/plivo/...
Adds asynchronous SMS, call, and phone lookup requests with structured error handling and Data responses.
Plivo registration and presentation
src/lfx/src/lfx/components/__init__.py, src/frontend/src/icons/Plivo/..., src/frontend/src/icons/*IconImports.ts, src/frontend/src/utils/styleUtils.ts, docs/docs/Components/bundles-plivo.mdx, docs/sidebars.js
Registers the Plivo module and icon, adds the sidebar bundle entry, and documents configuration and responses.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant PlivoSendSMSComponent
  participant httpx
  participant PlivoAPI
  PlivoSendSMSComponent->>httpx: Send authenticated SMS request
  httpx->>PlivoAPI: POST SMS payload
  PlivoAPI-->>httpx: Return JSON response
  httpx-->>PlivoSendSMSComponent: Return response data
Loading

Suggested reviewers: erichare


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 error, 3 warnings)

Check name Status Explanation Resolution
Test Coverage For New Implementations ❌ Error The feature range adds three Plivo components and frontend registration, but no test_*.py or *.test.ts(x) files; the new API functionality has no unit or integration coverage. Add convention-compliant backend unit tests for all three components, mocked API/error paths, and appropriate integration tests; add frontend tests for the Plivo icon or mapping.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Test Quality And Coverage ⚠️ Warning No Plivo-specific tests exist (the repository search found 0), while three async HTTP components and frontend registrations were added; success and error behavior are untested. Add pytest async unit tests for all three components with mocked HTTP success and error responses, plus Playwright/Jest coverage for the icon and sidebar registrations.
Test File Naming And Structure ⚠️ Warning The full Plivo diff adds zero test files and no Plivo test references; three new HTTP components have no automated positive, negative, or edge-case coverage. Add pytest test_*.py files for all three components with mocked success and HTTP/request/JSON error cases, plus Playwright coverage for the Plivo sidebar/icon registration.
✅ Passed checks (5 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Excessive Mock Usage Warning ✅ Passed The Plivo commits add no test or spec files, and no existing test references the new components; therefore, no excessive mock usage is present.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the Plivo bundle and its SMS, voice call, and number lookup components.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Aug 4, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/docs/Components/bundles-plivo.mdx`:
- Around line 37-42: Update the Plivo Make Call configuration list to document
the Answer Method setting, keeping GET for the default Answer URL and selecting
POST only when the configured endpoint accepts POST requests.
- Line 35: Update the obsolete Plivo documentation URLs to the current routes:
in docs/docs/Components/bundles-plivo.mdx lines 35-35 and
src/lfx/src/lfx/components/plivo/make_call.py lines 15-15, use the current Calls
route; in docs/docs/Components/bundles-plivo.mdx lines 53-53 and
src/lfx/src/lfx/components/plivo/lookup_number.py lines 15-15, use the current
Lookup Overview route.

In `@src/frontend/src/icons/Plivo/index.tsx`:
- Around line 1-10: Run make format_frontend to format the frontend
TypeScript/React file, then include the formatter-generated changes in the
commit without making unrelated edits.
- Around line 5-10: Update the public props of PlivoIcon to include optional
isDark?: boolean while preserving forwardRef support. Destructure or otherwise
consume isDark before spreading remaining props onto the Plivo SVG so it is not
passed as an unsupported SVG attribute.

In `@src/lfx/src/lfx/components/plivo/make_call.py`:
- Around line 50-59: Update the answer_url field definition in make_call.py to
set required=True, ensuring users cannot clear the URL and build_output() always
sends a valid value for Plivo Create Call requests.

In `@src/lfx/src/lfx/components/plivo/send_sms.py`:
- Around line 34-40: Update the info text on the “src” MessageTextInput to
distinguish Plivo’s supported sender formats: phone numbers use E.164 format,
while short codes and alphanumeric sender IDs do not. Preserve the existing
value, required setting, and field name.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 2513b65b-2cc8-4f15-b3fe-e3804f996d68

📥 Commits

Reviewing files that changed from the base of the PR and between e73fd4b and 5ca3071.

⛔ Files ignored due to path filters (1)
  • src/frontend/src/icons/Plivo/plivo.svg is excluded by !**/*.svg
📒 Files selected for processing (12)
  • docs/docs/Components/bundles-plivo.mdx
  • docs/sidebars.js
  • src/frontend/src/icons/Plivo/Plivo.jsx
  • src/frontend/src/icons/Plivo/index.tsx
  • src/frontend/src/icons/eagerIconImports.ts
  • src/frontend/src/icons/lazyIconImports.ts
  • src/frontend/src/utils/styleUtils.ts
  • src/lfx/src/lfx/components/__init__.py
  • src/lfx/src/lfx/components/plivo/__init__.py
  • src/lfx/src/lfx/components/plivo/lookup_number.py
  • src/lfx/src/lfx/components/plivo/make_call.py
  • src/lfx/src/lfx/components/plivo/send_sms.py


## Plivo Make Call

The **Plivo Make Call** component places an outbound phone call through the [Plivo Voice API](https://www.plivo.com/docs/voice/api/call?utm_source=github&utm_medium=oss&utm_campaign=langflow-plivo).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Repair the obsolete Plivo documentation routes.

The Call and Lookup routes used here return 404. The current Calls and Lookup Overview pages are available. ()

  • docs/docs/Components/bundles-plivo.mdx#L35-L35: replace the Voice API link with the current Calls route.
  • docs/docs/Components/bundles-plivo.mdx#L53-L53: replace the Lookup API link with the current Lookup Overview route.
  • src/lfx/src/lfx/components/plivo/lookup_number.py#L15-L15: update the component documentation URL to the current Lookup Overview route.
  • src/lfx/src/lfx/components/plivo/make_call.py#L15-L15: update the component documentation URL to the current Calls route.
Suggested path updates
-https://www.plivo.com/docs/lookup/api/number
+https://www.plivo.com/docs/lookup/overview

-https://www.plivo.com/docs/voice/api/call
+https://www.plivo.com/docs/voice/api/calls
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
The **Plivo Make Call** component places an outbound phone call through the [Plivo Voice API](https://www.plivo.com/docs/voice/api/call?utm_source=github&utm_medium=oss&utm_campaign=langflow-plivo).
The **Plivo Make Call** component places an outbound phone call through the [Plivo Voice API](https://www.plivo.com/docs/voice/api/calls?utm_source=github&utm_medium=oss&utm_campaign=langflow-plivo).
Suggested change
The **Plivo Make Call** component places an outbound phone call through the [Plivo Voice API](https://www.plivo.com/docs/voice/api/call?utm_source=github&utm_medium=oss&utm_campaign=langflow-plivo).
The **Plivo Lookup Number** component looks up carrier and formatting details for a phone number through the [Plivo Lookup API](https://www.plivo.com/docs/lookup/overview?utm_source=github&utm_medium=oss&utm_campaign=langflow-plivo).
Suggested change
The **Plivo Make Call** component places an outbound phone call through the [Plivo Voice API](https://www.plivo.com/docs/voice/api/call?utm_source=github&utm_medium=oss&utm_campaign=langflow-plivo).
documentation: str = "https://www.plivo.com/docs/lookup/overview"
Suggested change
The **Plivo Make Call** component places an outbound phone call through the [Plivo Voice API](https://www.plivo.com/docs/voice/api/call?utm_source=github&utm_medium=oss&utm_campaign=langflow-plivo).
documentation: str = "https://www.plivo.com/docs/voice/api/calls"
📍 Affects 3 files
  • docs/docs/Components/bundles-plivo.mdx#L35-L35 (this comment)
  • docs/docs/Components/bundles-plivo.mdx#L53-L53
  • src/lfx/src/lfx/components/plivo/lookup_number.py#L15-L15
  • src/lfx/src/lfx/components/plivo/make_call.py#L15-L15
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/docs/Components/bundles-plivo.mdx` at line 35, Update the obsolete Plivo
documentation URLs to the current routes: in
docs/docs/Components/bundles-plivo.mdx lines 35-35 and
src/lfx/src/lfx/components/plivo/make_call.py lines 15-15, use the current Calls
route; in docs/docs/Components/bundles-plivo.mdx lines 53-53 and
src/lfx/src/lfx/components/plivo/lookup_number.py lines 15-15, use the current
Lookup Overview route.

Comment on lines +37 to +42
1. Add the **Plivo Make Call** component to your flow, and then configure it as follows:

* **Plivo Auth ID** and **Plivo Auth Token**: Enter the credentials for your Plivo account.
* **From Number**: Enter the caller ID. This is a Plivo phone number in E.164 format.
* **To Number**: Enter the destination phone number in E.164 format, such as `+14150000001`.
* **Answer URL**: Enter a publicly reachable URL that returns Plivo answer XML, such as a `<Speak>` element, when the call is answered. A default public URL is provided, so a basic call needs no additional setup.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Document the Answer Method setting.

The component exposes Answer Method with GET and POST, but this section omits it. Add an instruction that keeps GET for the default Answer URL and uses POST only for an endpoint that accepts POST.

Proposed documentation update
     * **Answer URL**: Enter a publicly reachable URL that returns Plivo answer XML, such as a `<Speak>` element, when the call is answered. A default public URL is provided, so a basic call needs no additional setup.
+    * **Answer Method**: Keep `GET` for the default Answer URL. Use `POST` only if your custom endpoint accepts POST.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
1. Add the **Plivo Make Call** component to your flow, and then configure it as follows:
* **Plivo Auth ID** and **Plivo Auth Token**: Enter the credentials for your Plivo account.
* **From Number**: Enter the caller ID. This is a Plivo phone number in E.164 format.
* **To Number**: Enter the destination phone number in E.164 format, such as `+14150000001`.
* **Answer URL**: Enter a publicly reachable URL that returns Plivo answer XML, such as a `<Speak>` element, when the call is answered. A default public URL is provided, so a basic call needs no additional setup.
1. Add the **Plivo Make Call** component to your flow, and then configure it as follows:
* **Plivo Auth ID** and **Plivo Auth Token**: Enter the credentials for your Plivo account.
* **From Number**: Enter the caller ID. This is a Plivo phone number in E.164 format.
* **To Number**: Enter the destination phone number in E.164 format, such as `+14150000001`.
* **Answer URL**: Enter a publicly reachable URL that returns Plivo answer XML, such as a `<Speak>` element, when the call is answered. A default public URL is provided, so a basic call needs no additional setup.
* **Answer Method**: Keep `GET` for the default Answer URL. Use `POST` only if your custom endpoint accepts POST.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/docs/Components/bundles-plivo.mdx` around lines 37 - 42, Update the
Plivo Make Call configuration list to document the Answer Method setting,
keeping GET for the default Answer URL and selecting POST only when the
configured endpoint accepts POST requests.

Comment thread src/frontend/src/icons/Plivo/index.tsx Outdated
Comment on lines +1 to +10
import type React from "react";
import { forwardRef } from "react";
import Plivo from "./Plivo";

export const PlivoIcon = forwardRef<
SVGSVGElement,
React.PropsWithChildren<{}>
>((props, ref) => {
return <Plivo ref={ref} {...props} />;
});

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Commit the frontend formatter output.

The autofix job rewrote this file. Run make format_frontend and commit the result so CI does not modify the pull request.

As per coding guidelines, TypeScript and React frontend files must be formatted with make format_frontend.

🧰 Tools
🪛 GitHub Actions: autofix.ci / 0_autofix.txt

[warning] 1-1: autofix-ci detected and applied formatting or autofix changes to this file (5 insertions and 6 deletions).

🪛 GitHub Actions: autofix.ci / autofix

[error] 1-1: Autofix modified this file and committed 5 insertions and 6 deletions. The CI log reports 'Autofix task started.'

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/frontend/src/icons/Plivo/index.tsx` around lines 1 - 10, Run make
format_frontend to format the frontend TypeScript/React file, then include the
formatter-generated changes in the commit without making unrelated edits.

Sources: Coding guidelines, Pipeline failures

Comment thread src/frontend/src/icons/Plivo/index.tsx Outdated
Comment on lines +5 to +10
export const PlivoIcon = forwardRef<
SVGSVGElement,
React.PropsWithChildren<{}>
>((props, ref) => {
return <Plivo ref={ref} {...props} />;
});

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Expose the required isDark icon prop.

PlivoIcon accepts only children, so callers cannot pass isDark. Add isDark?: boolean to the public props. Consume or remove it before spreading SVG attributes.

As per coding guidelines, custom frontend icons must support forwardRef and isDark.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/frontend/src/icons/Plivo/index.tsx` around lines 5 - 10, Update the
public props of PlivoIcon to include optional isDark?: boolean while preserving
forwardRef support. Destructure or otherwise consume isDark before spreading
remaining props onto the Plivo SVG so it is not passed as an unsupported SVG
attribute.

Source: Coding guidelines

Comment on lines +50 to +59
name="answer_url",
display_name="Answer URL",
info=(
"URL Plivo fetches for call-flow XML when the call is answered. A default static URL is "
"provided, so a basic call needs no setup. Override it with your own webhook to customize "
"what the call says."
),
value="https://s3.amazonaws.com/static.plivo.com/answer.xml",
required=False,
),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== locate file =="
git ls-files | rg '(^|/)make_call\.py$' || true

echo "== file outline =="
ast-grep outline src/lfx/src/lfx/components/plivo/make_call.py || true

echo "== relevant file sections =="
wc -l src/lfx/src/lfx/components/plivo/make_call.py
sed -n '1,180p' src/lfx/src/lfx/components/plivo/make_call.py

echo "== related Plivo answer_url docs/package references in repo =="
rg -n "answer_url|Create Call|api\.plivo\.com|required=False|required=True" src/lfx/src/lfx/components/plivo || true

Repository: langflow-ai/langflow

Length of output: 6572


🌐 Web query:

Plivo API Create Call answer_url required answer_url parameter

💡 Result:

Yes, the answer_url parameter is a required field when creating an outbound call using the Plivo API [1][2][3][4][5][6]. This parameter specifies the URL that Plivo will invoke via an HTTP request when the outbound call is answered [1]. The response from this URL should contain the Plivo XML (XML) instructions that dictate how the call should be handled (e.g., playing audio, gathering input, or connecting to another party). Across Plivo's official SDKs (including Python, Java,.NET, Node.js, and Ruby), the create method signature consistently includes answer_url as a mandatory argument [1][2][3][4][5][6]. Attempting to initiate a call without providing a valid answer_url will result in an API error [6].

Citations:


Require a nonempty answer_url.

answer_url is optional, so users can clear it. build_output() strips the value before sending it, so a cleared configuration still sends an empty answer_url. Plivo requires a valid answer_url for Create Call requests, which makes the request fail instead of using the default in this case. Set required=True on answer_url.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/lfx/src/lfx/components/plivo/make_call.py` around lines 50 - 59, Update
the answer_url field definition in make_call.py to set required=True, ensuring
users cannot clear the URL and build_output() always sends a valid value for
Plivo Create Call requests.

Comment on lines +34 to +40
MessageTextInput(
name="src",
display_name="From Number",
info="Sender ID: a Plivo phone number, short code, or alphanumeric sender ID in E.164 format.",
value=os.getenv("PLIVO_SRC", ""),
required=True,
),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🌐 Web query:

Plivo SMS sender ID E.164 short code alphanumeric sender ID

💡 Result:

Plivo supports several types of sender IDs for SMS, including numeric (long code) and alphanumeric identifiers [1][2]. The specific requirements and support for these identifiers depend heavily on the destination country and local carrier regulations [1][3]. 1. Numeric Sender IDs: - E.164 Format: When using a numeric sender ID, destination phone numbers (and source numbers when applicable) are typically formatted in E.164 (e.g., +12025551234) [4]. - Short Codes: These are six-digit phone numbers used for high-volume, large-scale messaging [1][2]. Unlike standard long codes, short codes generally have no restrictions on the number of messages you can send per day [1][2]. 2. Alphanumeric Sender IDs: - Definition: These consist of a combination of letters and numbers (e.g., PLIVO) used to identify a brand [1]. - Requirements: They typically range from 6 to 11 characters in length, depending on the destination, and cannot contain spaces or hyphens [1][2]. Specific countries may have unique constraints; for instance, sender IDs for India must consist of exactly six alphabetical characters [1][2]. - Registration: In many regions, alphanumeric sender IDs must be preregistered with local carriers through the Plivo console by submitting a compliance application, which includes details like your use case, sample messages, and company information [1][5][3]. 3. Regional Restrictions: - Important Notice: Alphanumeric sender IDs are not supported in the United States or Canada [1][5]. Messages sent to these destinations must originate from an SMS-enabled Plivo phone number [1][4]. For detailed implementation and registration steps, users should consult the official Plivo documentation and the country-specific requirement lists available in the Plivo support center [1][2][6].

Citations:


Correct the sender-format help text.

Short codes and alphanumeric sender IDs are not E.164 values. State that E.164 applies only to phone-number sender IDs. Plivo supports phone numbers, short codes, and alphanumeric sender IDs as separate src formats. (plivo.com)

Proposed fix
-            info="Sender ID: a Plivo phone number, short code, or alphanumeric sender ID in E.164 format.",
+            info="Sender ID: a Plivo phone number in E.164 format, a short code, or an alphanumeric sender ID.",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
MessageTextInput(
name="src",
display_name="From Number",
info="Sender ID: a Plivo phone number, short code, or alphanumeric sender ID in E.164 format.",
value=os.getenv("PLIVO_SRC", ""),
required=True,
),
MessageTextInput(
name="src",
display_name="From Number",
info="Sender ID: a Plivo phone number in E.164 format, a short code, or an alphanumeric sender ID.",
value=os.getenv("PLIVO_SRC", ""),
required=True,
),
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/lfx/src/lfx/components/plivo/send_sms.py` around lines 34 - 40, Update
the info text on the “src” MessageTextInput to distinguish Plivo’s supported
sender formats: phone numbers use E.164 format, while short codes and
alphanumeric sender IDs do not. Preserve the existing value, required setting,
and field name.

@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Aug 5, 2026
sarveshpatil-plivo and others added 6 commits August 6, 2026 13:07
Adds a Plivo bundle exposing send SMS, make call, and number lookup
components backed by the Plivo REST API. The bundle ships in the lfx-bundles
metapackage (src/bundles/lfx-bundles/src/lfx_bundles/plivo) with a
compatibility shim at the former in-tree path, matching the other providers.

Signed-off-by: Sarvesh Patil <sarvesh.patil@plivo.com>
Signed-off-by: Sarvesh Patil <sarvesh.patil@plivo.com>
Signed-off-by: Sarvesh Patil <sarvesh.patil@plivo.com>
Signed-off-by: Sarvesh Patil <sarvesh.patil@plivo.com>
Signed-off-by: Sarvesh Patil <sarvesh.patil@plivo.com>
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Aug 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant